#!/usr/bin/env python
# -*- coding: utf-8 -*-

##
# Módulos del sistema
# Parte gráfica
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk.\nProblemas con la parte gráfica"

##
# Módulos propios
try:
    from lib.database import UsuarioBD
except ImportError, error:
    print error
    print "Error al cargar la base de datos."

class InicioSesion:
    """GUI inicio de sesión.

        Esta clase es la que va a permitir ejecuarse el msj_inicio _sesion.
        Dependiendo del user es a qué interfaz se va a dirigir.
        Interfaces distintas:
        |------> Mesa de Ayuda.
        |------> Grupo de Resolución.
        |------> Gerencia.

    """
    erradas = 0
    def __init__(self):
        self.gladefile = "gui/gui_tp.glade"
        self.wTree = gtk.glade.XML(self.gladefile,"msj_inicio_sesion")

    def run(self):
        self.user = self.wTree.get_widget("user")
        self.user_pass = self.wTree.get_widget("pass")
        self.user.set_text('')
        self.user_pass.set_text('')
        result = self.wTree.get_widget("msj_inicio_sesion").run()
        self.user = self.user.get_text()
        self.paswd = self.user_pass.get_text()
        self.wTree.get_widget("msj_inicio_sesion").destroy()
        return result

    def verificar(self):
        opciones = {'MesaDeAyuda':1, 'GrupoDeResolucion':2, 'Gerencia':3}
        try:
            #Si no existe el usuario no devuelve nada lanza esta exepcion.
            resultado = UsuarioBD.selectBy(u_legajo = self.user, password = self.paswd)[0]
            if(self.user == resultado.u_legajo and
                    self.paswd == resultado.password):
                opcion = resultado.grupo_de_resolucion_.nombre
                if opciones.get(opcion):
                    return opciones[opcion],resultado
                else:
                    return -1,None
            else:
                #Metio la pata.
                return -1,None
        except IndexError, error:
            #print error
            return -1,None

class MensajeDeError:
    """Mensaje de retroalimentación de Error.
    
    Keyword arguments:
    texto -- Texto mostrado en el mensaje de error
    padre -- Widget padre del dialogo de error

    """
    def __init__(self, texto, padre=None):
        self.msj_error = gtk.MessageDialog(parent=padre, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_ERROR,
                  buttons=gtk.BUTTONS_OK, message_format=texto)
        self.msj_error.set_title("Error - ghhp")
    
    def run(self):
        """Corre el mensaje"""
        if self.msj_error.run():
            self.msj_error.destroy()

class MensajeDeAdvertencia:
    """Mensaje de retroalimentación de advertencia.

    Keyword arguments:
    texto -- Texto mostrado en el mensaje de error
    padre -- Widget padre del dialogo de error

    """
    def __init__(self, texto, padre=None):
        self.msj = gtk.MessageDialog(parent=padre, flags=gtk.DIALOG_DESTROY_WITH_PARENT, type=gtk.MESSAGE_WARNING,
                  buttons=gtk.BUTTONS_YES_NO, message_format=texto)
        self.msj.set_markup(texto)
        self.msj.set_title("Advertencia")
    
    def run(self):
        """ Corre el mensaje"""
        self.msj.run()

class MensajeDeAbout:
    """Mensaje de retroalimentación acerca de....

    Detalle del uso del mismo
    """
    def __init__(self, padre=None):

        self.msj = gtk.AboutDialog()
        authorNames = ("Gonzalez Juan Manuel",
                "Heizenreder Guillermo",
                "Hernando Pablo",
                "Perales Ivan")
        autores = ("Gonzalez Juan Manuel <panchis.fc@gmail.com>",
                "Heizenreder Guillermo <gheize@gmail.com>",
                "Hernando Pablo <pablojose90@gmail.com>",
                "Perales Ivan <vanp231@yahoo.com.ar>")
        self.msj.set_authors(autores)
        self.msj.set_documenters(autores)
        self.msj.set_name("Ghhp")
        self.msj.set_website("http://code.google.com/p/ghhp/")
        self.msj.set_comments("Sistema de Ayuda")
        self.msj.set_version("0.1")
        self.msj.set_copyright("Copyright © 2007 " + authorNames[0] +
                "\nCopyright © 2007 " + authorNames[1] + "\nCopyright © 2007 "
                + authorNames[2] + "\nCopyright © 2007 " + authorNames[3] )
        self.obtener_gpl()
        #iself.msj.set_license()
        self.msj.show()

    def obtener_gpl(self):
        """Lee el archivo GPL.txt.

        Explicacion
        """
        # Levantamos GPL.txt
        try:
            #import os
            #print os.getcwd()
            archivo = open('./doc/GPL.txt','r')
            lineas_archivo = archivo.readlines()
            gpl = ""
            for line in lineas_archivo:
                gpl += line
            archivo.close()
            self.msj.set_license(gpl)
        except IOError, err:
            print "IO Error %s" % err
        except:
            print "Error inesperado"


